package com.ejuornal.service;

import java.util.List;

import com.ejuornal.bean.Page;
import com.ejuornal.bean.Periodical;
import com.ejuornal.bean.vo.VO_SubScribe;

public interface PeriodicalService {
	/**
	 * 创建期刊
	 * @param periodical
	 */
	public void add(Periodical periodical);
	
//	/**
//	 * 编辑期刊，修改期刊的个别信息
//	 * @param periodical
//	 */
//	public void update(Periodical periodical);
	
	/**
	 * 期刊管理员审核期刊，修改期刊的状态
	 * @param status 期刊状态
	 */
	public void updateStatus(String status, int periodicalId);
	
	/**
	 * 主编审核每期期刊通过后，要更改t_periodical表中的出版时间（pubDate）字段的值
	 * @author syb
	 * @param pubDate 出版时间
	 * @param periodicalId 期刊ID号
	 */
	public void updatePubDate(String pubDate, int periodicalId);
	
//	/**
//	 * 根据ID号批量删除期刊
//	 * @param periodicalId 期刊ID号
//	 */
//	public void delete(int... periodicalId);
	
	/**
	 * 根据ID查询期刊
	 * @param periodicalId 期刊ID
	 * @return 返回Periodical对象
	 */
	public Periodical findById(int periodicalId);
	
	/**
	 * 模糊查询，根据字段property查询值为value的数据
	 * @param current_record 当前记录数
	 * @param url 地址
	 * @param property 字段
	 * @param value 字段值
	 * @return
	 */
	public Page<Periodical> findByStatus(int current_record,String url, String status);
	
	/**
	 * 根据主板单位查询
	 * @param current_record 当前记录数
	 * @param url 地址
	 * @param hostUnit 主办单位
	 * @return
	 */
	public Page<Periodical> findByHostUnit(int current_record,String url, String hostUnit, String status);

	/**
	 * 查询所有数据
	 * @param current_record
	 * @param url
	 * @return
	 */
	public Page<Periodical> findAll(int current_record, String url);
	
	/**
	 * Title:findTop
	 * Description:查询前几条信息
	 * author lwf
	 * @param count
	 * @return
	 * List<Periodical>
	 */
	public List<Periodical> findTop(int count);
	
	
	/**
	 * 根据关键字搜索期刊
	 * @param keywords
	 * @return
	 */
	public Page<Periodical> search(int current_record,String url,String keywords);
	
	/**
	 * 根据期刊的分类ID查询属于该分类的期刊
	 * @param current_record
	 * @param url
	 * @param categoryId 
	 * @param status
	 * @return
	 */
	public Page<Periodical> findByCategory(int current_record, String url, int categoryId, String status);
	
	/**
	 * Description 根据主编id查询所有期刊信息
	 * @author lwf
	 * @param id
	 * @return
	 */
	public List<Periodical> findByEditorChiefId(int id);
	
	/**
	 * 根据期刊分类查询不同状态的期刊
	 * @param id 期刊分类的ID
	 * @param status 期刊的状态
	 * @return
	 */
	public List<Periodical> findByCategoryId(int id, String status);
	public List<Periodical> search(String keywords);
	
	/**
	 * 根据主编的ID查询不同状态的期刊
	 * @author syb
	 * @param current_record
	 * @param url
	 * @param userId 主编的ID
	 * @param status 期刊的状态
	 * @return
	 */
	public Page<Periodical> findByUserIdPStatus(int current_record, String url, int userId, String status);
	
	/**
	 * 查询其他（未通过、停刊）期刊
	 * @author syb
	 * @param current_record
	 * @param url
	 * @param userId
	 * @return
	 */
	public Page<Periodical> findByUserId(int current_record, String url, int userId);
	
	/**
	 * 根据每期期刊id获取该期刊信息
	 * @author lwf
	 * @param perId
	 * @return Periodical
	 */
	public Periodical findPeriodicalByPerId(int perId);
	public List<VO_SubScribe> find();
	
	/**
	 * 查询某编辑所属的期刊
	 * @author syb
	 * @param editorId 编辑ID号
	 * @param status 期刊状态
	 * @param categoryId 期刊分类ID号
	 * @return
	 */
	public List<Periodical> findByEditorId(int editorId, String status, int categoryId);

	/**
	 * 根据文章的id查期刊
	 * @author lyy
	 * @param articalId
	 * @return
	 */
	public Periodical findPeriodicalByArticalId(int articalId);
	
	/**
	 * 查询不同状态的期刊
	 * @param status
	 * @return List<Periodical>
	 */
	public List<Periodical> periodicalAll(String status);
}
